var almsamim = {};
// objects
var comm, bbcode;
// vars
var isIE, isOpera,isGecko, isWebKit,ua,Editor;
// Browsers check
ua = navigator.userAgent;
almsamim.isOpera = isOpera = window['opera'] && opera.buildNumber;
almsamim.isWebKit = isWebKit = /WebKit/.test(ua);
almsamim.isGecko = isGecko = !isWebKit && /Gecko/.test(ua);
almsamim.isIE = isIE = !isWebKit && !isOpera && (/MSIE/gi).test(ua) && (/Explorer/gi).test(navigator.appName);
// ----------- almsamim plug-ins object -----------//
almsamim.plugins = {};
//thanks tuantrinh  smilies replace with bbocde
if (typeof window['smiley_wysiwyg'] == 'undefined')
{
       var smiley_wysiwyg = false;
}
if (smiley_wysiwyg)
{
       var smiley_code_bbcode = new Array();
       var smiley_img_bbcode = new Array();
       var t = document.URL;
       t =   t.replace("http://", "");
       var u = t.split("/");
       var v = "http://";
       for (var d = 0; d < u.length; d++) {
          if (d < u.length - 1) {
             v += u[d] + "/";
          }
       }

       for(var i = 0; i < smiley_total; i++) {
          smiley_code_bbcode[i] = smiley_code[i];
          smiley_img_bbcode[i] = "[IMG]" + v + smiley_path + smiley_img[i] + "[/IMG]";
       }

       function Smiley_BBcodetoHTML(str) {
          for(var i = 0; i < smiley_total; i++) {
             while (str.indexOf(smiley_code_bbcode[i]) > -1) {
                str = str.replace(smiley_code_bbcode[i], smiley_img_bbcode[i]);
             }
          }
          return str;
       };

       function Smiley_HTMLtoBBcode(str) {
          for(var i = 0; i < smiley_total; i++) {
             while (str.indexOf(smiley_img_bbcode[i]) > -1) {
                str = str.replace(smiley_img_bbcode[i], smiley_code_bbcode[i]);
             }
          }
          return str;
       };
}

// ----------- almsamim bbcode object -----------//
almsamim.bbcode = bbcode = {

// turning the editor on
Start  : function (){
                var tDiv = document.getElementById("dvSample");
                Editor = document.getElementById('box').contentWindow.document;
                //writing iframe content and style of the editor
                var iframeContent;
                iframeContent  = '<html xmlns="http://www.w3.org/1999/xhtml" dir="' + lang_s[9] + '" lang="en-gb" xml:lang="en-gb">\n';
                iframeContent += '<head><style type="text/css">body{font-family:Verdana,Arial,Sans-Serif,Tahoma;font-size:12px;background:'+ lang_s[6] +';color:' + lang_s[7] + ';margin:2px;padding:2px;}p {margin:0;padding:0;min-height: 1em; } *+html p { min-height: auto; }div {margin:0;padding:0;}</style></head><body>';      
                if (tDiv.value !== ""){
                var v = tDiv.value;
                iframeContent += this._BBcodetoHTML(v) ;
                }
                iframeContent += '</body>';
                iframeContent += '</html>';
                Editor.open();
                Editor.write(iframeContent);
                Editor.close();
                if(isIE){
                        Editor.attachEvent('onkeypress', editorEvents);
                        Editor.attachEvent('onmousedown', editorEvents);
                        Editor.attachEvent('onmousedown', hideall);
                        Editor.body.contentEditable = true;
                }else{
                        Editor.addEventListener('keypress', editorEvents, true);
                        Editor.addEventListener('mousedown', editorEvents, true);
                        Editor.addEventListener('mousedown', hideall, true);
                        Editor.designMode = "on";
                }
                if(!isWebKit){
                // disable CSS in Geko ,IE and opera  
                try {
                        // Try new Gecko method
                        Editor.execCommand("styleWithCSS", 0, false);
                } catch (e) {
                        // Use old method
                        try {Editor.execCommand("useCSS", 0, true);} catch (e) {};
                }
                }
},
// convert BBcode to HTML code
_BBcodetoHTML : function (a)
{
    function r(re, str) {
            a = a.replace(re, str);
    };
           if (smiley_wysiwyg)   {
          a=Smiley_BBcodetoHTML(a);
       }
        r(/\n+(\[\/list\])/gi,'[/list]');
        r(/\[list\]\n+/gi,'[list]');
        r(/\[list=1\]\n+/gi,'[list=1]');
        r(/\[list=a\]\n+/gi,'[list=a]');
        r(/\n+\[\/tr\]/gi,'[/tr]');
        r(/\n+\[tr\]/gi,'[tr]');
        r(/\n+\[td\]/gi,'[td]');
        r(/\n+\[\/td\]/gi,'[/td]');
        r(/\n+\[\/table\]/gi,'[/table]');
        r(/\[\/table\]$/gi,"[/table]\n");
        r(/&/g,'&amp;');
        r(/</g,'&lt;');
        r(/>/g,'&gt;');
        r(/  /g,'  ');
        r(/\t/g,'     ');      
        r(/\n/g,'<br>');
        r(/\[hr\]/gi,'<hr />');
        r(/\[\/hr]/gi,'');
        r(/\[table\]/gi,'<table style="width: 100%;table-layout:fixed;padding: 0px;border:1px dotted gray;">');
        r(/\[\/table\]/gi,'</table>');
        r(/\[(\/|)tr\]/gi,'<$1tr>');
        r(/\[(\/|)td\]/gi,'<$1td style="font-size: 20px; display:table-cell;padding:1px;vertical-align:inherit;border:1px dotted #CCCCCC;">');
        r(/\[(\/|)indent\]/gi,'<$1blockquote>');
        r(/\[(sub|sup|strike|s|b|i|u|blockquote)\]/gi,'<$1>');
        r(/\[\/(sub|sup|strike|s|b|i|u|blockquote)\]/gi,'</$1>');
        r(/\[font=(.*?)\]/gi,'<font face="$1">');
        r(/\[color=(.*?)\]/gi,'<font color="$1">');
        r(/\[highlight=(.*?)\]/gi,'<span style="background-color:$1">');
        r(/\[\/highlight\]/gi,'</span>');      
        r(/\[size=(.*?)\]/gi,'<font size="$1">');
        r(/\[\/(font|color|size)\]/gi,'</font>');
        r(/\[(center|left|right|justify)\]/gi,'<div align="$1">');
        r(/\[\/(center|left|right|justify)\]/gi,'</div>');
        r(/\[url=(.*?)\]/gi,'<a href="$1">');
        r(/\[url\](.*?)\[\/url\]/gi,'<a href="$1">$1[/url]');
        r(/\[\/url\]/gi,'</a>');
        r(/\[img\](.*?)\[\/img\]/gi,'<img src="$1">');
        var b=a.match(/\[(list|list=1|list=a)\]/gi);
        r(/\[list=1\]/gi,'<ol>');
        r(/\[list=a\]/gi,'<ol style="list-style-type: lower-alpha">');
        r(/\[list\]/gi,'<ul>');
        r(/\[\*\]/gi,'<li>');
        r(/<br[^>]*><li>/gi,'<li>');
        r(/<br[^>]*> <li>/gi,'<li>');
        r(/<br[^>]*><\/li>/gi,'</li>');
        r(/\[h([1-6])?\]/gi,"<h$1>");
        r(/\[\/h([1-6])?\]/gi,"</h$1>");
        if(b){for(var i=0;i<b.length;i++){if(b[i].toLowerCase()=="[list]"){r(/\[\/list\]/i,'</ul>');}else if(b[i].toLowerCase()=="[list=1]"||b[i].toLowerCase()=="[list=a]"){r(/\[\/list\]/i,'</ol>');}}}
        if(isOpera){r(/<\/table>/gi,'</tr></table>');r(/<\/tr>/gi,'</td></tr>');}      
        if(isOpera||isIE){r(/<li>/gi,'</li><li>');r(/<\/(ol|ul)>/gi,'</li></$1>');}
        return a;
},

// erase white spaces from the text inside the editor
_erase : function (a)
{
        if(typeof a!="string")return a;
        var b=a;
        var c=b.substring(0,1);
        while(c==" ")
        {
                b=b.substring(1,b.length);
                c=b.substring(0,1)
        }
        c=b.substring(b.length-1,b.length);
        while(c==" ")
        {
                b=b.substring(0,b.length-1);
                c=b.substring(b.length-1,b.length)
        }
        while(b.indexOf("  ")!=-1)
        {
                b=b.substring(0,b.indexOf("  "))+b.substring(b.indexOf("  ")+1,b.length)
        }
        return b ;
},

// convert HTML to bb when submit bbcode
_HTMLtoBBcode : function (a) {
            function r(re, str) {
                    a = a.replace(re, str);
            };
        if (isIE) {
            r(/<\/li>/gi, "");
            r(/<li>/gi, "[*]");
        }
        r(/<div><\/div>/gi, "");
        r(/<br[^>]*>/gi, "<br>");
        r(/[\n\r]/gi, " ");
        r(/<script>(.*?)<\/script>/gi, "");
        r(/<script.*?>(.*?)<\/script>/gi, "");
                // remove style tag with anything within
        r(/<style>(.*?)<\/style>/gi, "");
        r(/<style.*?>(.*?)<\/style>/gi, "");
                // remove tags <w:> of MS word
        r(/<w:.*?>(.*?)<\/w:.*?>/gi, "");
        r(/<o:p><\/o:p>/gi, "");
        r(/<(abbr|acronym|applet|area|base|basefont|bdo|bgSound|big|body|button|caption|center|cite|code|col|colGroup|comment|custom|dd|del|dfn|dir|dl|dt|embed|fieldSet|frame|frameSet|head|html|ins|isIndex|kbd|label|legend|link|listing|map|marquee|menu|meta|noBR|noFrames|noScript|optGroup|option|param|plainText|pre|q|rt|ruby|samp|small|tBody|tFoot|tHead|title|tt|wbr|xml|xmp|th|script|form|input|iframe|object|select|textarea)(.*?)>/gi, "");
        r(/<\/(abbr|acronym|applet|area|base|basefont|bdo|bgSound|big|body|button|caption|center|cite|code|col|colGroup|comment|custom|dd|del|dfn|dir|dl|dt|embed|fieldSet|frame|frameSet|head|html|ins|isIndex|kbd|label|legend|link|listing|map|marquee|menu|meta|noBR|noFrames|noScript|optGroup|option|param|plainText|pre|q|rt|ruby|samp|small|tBody|tFoot|tHead|title|tt|wbr|xml|xmp|th|script|form|iframe|object|select|textarea)(.*?)>/gi, "");
        r(/\xA0/gi, " ");
        r(/<br[^>]*><\/div>/gi, "</div>");
        r(/<br[^>]*>/gi, "\n");
        r(/<hr[^>]*>/gi, "[hr][/hr]");
        r(/<\/hr>/gi, "");
        r(/<(ul|ol)><\/li>/gi, "<$1>");
        r(/  /gi, " ");
        r(/<p([^>]*)>/gi, "<div$1>");
        r(/<\/p([^>]*)>/gi, "</div$1>\n");
        r(/\t/g, "     ");
        r(/\n /g, "\n");
        r(/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/gi, "[url=$1]$2[/url]");
        r(/<h([1-6])([^>]*)>/gi, "[h$1]");
        r(/<\/h([1-6])([^>]*)>/gi, "[/h$1]");
                r(/ (lang|start|class)=\"(.*?)\"/gi, "");
                r(/<span class="highlight">(.*?)<\/span>/gi, "$1");
                r(/&quot;/gi, "");              
        var b = a.split("<");
        var c = new Array;
        var e = 0;
        if (b.length > 1) {
            for (var i = 0; i < b.length; i++) {
                if (i > 0) {
                    b[i] = "<" + b[i];
                }
                var f = b[i];
                if (f.match(/<(div|span|font|strong|b|u|i|em|var|address|h1|h2|h3|h4|h5|h6|blockquote|img|ol|ul|li|a|strike|s|sub|sup|hr|table|tr|td)( ([^>]{1,}.*?)){0,1}( {0,1}){0,1}>/i)) {
                    var g = RegExp.$1;
                    var h = RegExp.$3;
                    if (h.toLowerCase().indexOf("style=") != -1 && h.toLowerCase().indexOf("font-family:") != -1 && h.toLowerCase().indexOf("face=") != -1) {
                        h = h.replace(/ face="(.*?)"/gi, "");
                    } else if (h.toLowerCase().indexOf("style=") != -1 &&  h.toLowerCase().indexOf("color:") != -1 && h.toLowerCase().indexOf("color=") != -1) {
                        h = h.replace(/ color="(.*?)"/gi, "");
                    } else if (h.toLowerCase().indexOf("style=") != -1 &&  h.toLowerCase().indexOf("text-align:") != -1 && h.toLowerCase().indexOf("align=") != -1) {
                        h = h.replace(/ align="(.*?)"/gi, "");
                    }else if (h.toLowerCase().indexOf("style=") != -1 && h.toLowerCase().indexOf("align=") != -1) {
                        h = h.replace(/ align="(.*?)"/gi, "text-align:$1;");
                    }else if (h.toLowerCase().indexOf("type=") != -1) {
                        h = h.replace(/ type="(.*?)"/gi, "");
                    }
                    h = h.replace(/(color=|size=|face=|style=|align=)/gi, "|$1");
                    h = h.replace(/('|")/g, "");
                    h = h.replace(/ \|/g, "|");
                    var j = h.split("|");
                    var k = new Array;
                    if (j != null) {
                        for (var z = 0; z < j.length; z++) {
                            var l = j[z].split("=");
                            k[l[0].toLowerCase()] = j[z].replace(l[0].toLowerCase() + "=", "");
                        }
                    }
                    var m = "";
                    var g = g.toLowerCase();
                    if (g == "strike" || g == "s") {
                        if (k['style']) {
                            m = "[s]" + this._process(g, k);
                        } else {
                            m = "[s]";
                        }
                    } else if (g == "sub") {
                        if (k['style']) {
                            m = "[sub]" + this._process(g, k);
                        } else {
                            m = "[sub]";
                        }
                    } else if (g == "sup") {
                        if (k['style']) {
                            m = "[sup]" + this._process(g, k);
                        } else {
                            m = "[sup]";
                        }
                    }else if(g=="blockquote"){
                                        if(k['style'])
                                                {
                                                m = '[blockquote]'+this._process(g,k);
                                        }
                                        else
                                                {
                                                m='[blockquote]';
                                        }
                                } else if (g == "li") {
                        if (k['style']) {
                            m = "[*]" + this._process(g, k);
                        } else {
                            m = "[*]";
                        }
                    } else if (g == "strong" || g == "b") {
                        if (k['style']) {
                            if (k['style'].toLowerCase().indexOf("font-weight: bold") != -1 ||  k['style'].toLowerCase().indexOf("font-weight: 700") != -1) {
                                m = this._process(g, k);
                            } else {
                                m = "[b]" + this._process(g, k);
                            }
                        } else {
                            m = "[b]";
                        }
                    } else if (g == "em" ||
                        g == "i" || g == "var" || g == "address") {
                        if (k['style']) {
                            if (k['style'].toLowerCase().indexOf("font-style: italic") != -1) {
                                m = this._process(g, k);
                            } else {
                                m = "[i]" + this._process(g, k);
                            }
                        } else {
                            m = "[i]";
                        }
                    } else if (g == "u") {
                        if (k['style']) {
                            if (k['style'].toLowerCase().indexOf("text-decoration: underline") != -1) {
                                m = this._process(g, k);
                            } else {
                                m = "[u]" + this._process(g, k);
                            }
                        } else {
                            m = "[u]";
                        }
                    } else if (g == "ol") {
                        if (k['style']) {
                            m = this._process(g, k);
                            if (m.indexOf("[list=a]") == -1) {
                                m += "[list=1]";
                            }
                        } else if (k.align) {
                            m = "[" + k.align.toUpperCase() + "]" + "[list=1]";
                        } else {
                            m = "[list=1]";
                        }
                    } else if (g == "ul") {
                        if (k['style']) {
                            m = this._process(g, k) + "[list]";
                        } else if (k.align) {
                            m = "[" + k.align.toUpperCase() + "]" + "[list=1]";
                        } else {
                            m = "[list]";
                        }
                    } else if (g == "font" || g == "h1" || g == "h2" || g == "h3" || g == "h4" || g == "h5" || g == "h6") {
                        if (j.length > 0) {
                            for (var r in k) {
                                if (r == "color") {
                                    m += "[color=" + k.color + "]";
                                } else if (r == "size") {
                                    if (isNaN(parseInt(k.size))) {
                                        k.size = 2;
                                    }
                                    m += "[size=" + k.size + "]";
                                } else if (r == "face") {
                                    m += "[font=" + k.face + "]";
                                } else if (r == "style") {
                                    m += this._process(g, k);
                                }
                            }
                        }
                    } else if (g == "div" || g == "span") {
                        if (k['style']) {
                            m = this._process(g, k);
                        } else if (k.align) {
                            m = "[" + k.align.toUpperCase() + "]";
                        } else {
                            m = "[ALMSAMIM]";
                        }
                    } else if (g == "img") {
                        if (isWebKit) {
                            f = f.replace(/<img(.*?)src="(.*?)">/gi, "[IMG]$2[/IMG]");
                        } else {
                            f.match(/<img(.*?)src="(.*?)"(.*?)>/gi);
                            var s = RegExp.$2;
                            s = s.replace("./", "");
                            if (s.toLowerCase().substr(0, 7) != "http://") {
                                var t = document.URL;
                                t = t.replace("http://", "");
                                var u = t.split("/");
                                var v = "http://";
                                for (var d = 0; d < u.length; d++) {
                                    if (d < u.length - 1) {
                                        v += u[d] + "/";
                                    }
                                }
                                f = f.replace(/\<img(.*?)src="(.*?)"(.*?)>/gi, "[IMG]" + v + s + "[/IMG]");
                            } else {
                                f = f.replace(/<img(.*?)src="(.*?)"(.*?)>/gi, "[IMG]$2[/IMG]");
                            }
                        }
                    } else if (g == "table") {
                        m = "[table]";
                    } else if (g == "tr") {
                        m = "[tr]";
                    } else if (g == "td") {
                        m = "[td]";
                    }
                    b[i] = f.replace(/(<([^>]+)>)/, m);
                    if (g != "img") {
                        c[e] = m;
                        e++;

                    }
                } else if (f.match(/<\/(div|span|font|strong|b|u|i|em|var|address|h1|h2|h3|h4|h5|h6|blockquote|ol|ul|li|a|strike|s|sub|sup|table|tr|td)>/i)) {
                    e--;
                    var w = c.pop();
                    if (w != null) {
                        var x = "";
                        var A = w;
                        A = A.replace(/=(.*?)\]/g, "]");
                        A = A.replace(/\]/g, "],");
                        A = A.replace(/\[(.*?)\]/g, "[/$1]");
                        var B = A.split(",");
                        B.reverse();
                        for (var y = 0; y < B.length; y++) {
                            x += B[y];
                        }
                        x = x.replace(/\[\/\*\]/gi, "");
                        b[i] = b[i].replace(/(<([^>]+)>)/, x);
                    } else {
                        b[i] = b[i].replace(/(<([^>]+)>)/, "");
                    }
                }
            }
            var C = b.join("");
        } else {
            var C = a;
        }
                function r2(re, str) {
                    C = C.replace(re, str);
            };
        r2(/<[^>]*>/g, "");
        r2(/&lt;/g, "<");
        r2(/&gt;/g, ">");
        r2(/ /g, " ");
        r2(/&amp;/g, "&");
        r2(/     /g, "\t");
        r2(/\[ALMSAMIM\]/g, "\n");
        r2(/\[ALMSAMIM\]\n+/g, "\n");
        r2(/\[\/ALMSAMIM\]\n+/g, "\n");
        if (isIE) {
                  r2(/\[\/ALMSAMIM\]/g, "");
           }else{
                  r2(/\[\/ALMSAMIM\]/g, "\n");
           }
        r2(/\[\*\]/gi, "\n[*]");
        r2(/\n\n\[\*\]/gi, "\n[*]");
        r2(/\[color=#.\w*\]\[\/color\]/gi, "");
                r2(/\[HIGHLIGHT=#.\w*\]\[\/HIGHLIGHT\]/gi,"");          
        r2(/\[size=\d\]\[\/size\]/gi, "");
        r2(/\[b\]\[\/b\]/gi, "");
        r2(/\[u\]\[\/u\]/gi, "");
        r2(/\[i\]\[\/i\]/gi, "");
        r2(/\[left\]\[\/left\]/gi, "");
        r2(/\[center\]\[\/center\]/gi, "");
        r2(/\[right\]\[\/right\]/gi, "");
        r2(/\[justify\]\[\/justify\]/gi, "");
        r2(/\[blockquote\]\[\/blockquote\]/gi, "");
        r2(/\[url\]\[\/url\]/gi, "");
        r2(/\[s\]\[\/s\]/gi, "");
        r2(/\[sub\]\[\/sub\]/gi, "");
        r2(/\[sup\]\[\/sup\]/gi, "");
        r2(/\[img\]\[\/img\]/gi, "");
        r2(/^\n+/, "");
        r2(/\n+$/, "");
        var D = C.match(/\[table\]/gi);
        var E = C.match(/\[\/table\]/gi);
        if (D && E) {
            if (D.length > E.length) {
                C += "[/table]";
            }
        } else if (D && !E) {
            C += "[/table]";
        }
        r2(/\[\/tr\]/gi, "\n[/tr]");
        r2(/\[tr\]/gi, "\n[tr]");
        r2(/\[td\]/gi, "\n[td]");
        r2(/\[\/table\]/gi, "\n[/table]");
        r2(/\[\/table\]$/gi, "[/table]\n");
        r2(/\[table\]\n+/gi, "[table]");
        r2(/\n+\[td\]/gi, "[td]");
        r2(/\n+\[\/table\]/gi, "[/table]");
        r2(/\n+\[\/td\]/gi, "[/td]");
        r2(/\n+\[tr\]/gi, "[tr]");
        r2(/\n+\[\/tr\]/gi, "[/tr]");
                if (smiley_wysiwyg){
             C=Smiley_HTMLtoBBcode(C);
        }
        return C;
},
// processing HTML code to BBcode
_process : function (a, b) {
	var c="";
	var d=b['style'].split(";");
	for(var j=0;j<d.length;j++){
		if(d[j]!=""&&d[j]!=null){
			var e=d[j].split(":");
			var f=e[0].toLowerCase().replace(/ /g,"");
			f=f.replace(/style=/gi,"");
			// fix 'Your message contains too few characters.'
			if(e[1]){
				var g=e[1].replace(/^ +| +$/g,"");
			}
                        if(f=="background-color")
                                {
                                        if(g.indexOf("#")==-1)
                                        {
                                                var h=this._toHex(g);
                                        } else {
                                                var h=g ;
                                        }
                                c+='[highlight='+h+']';
                                }
                                else if (f == "vertical-align" && g == "sub") {
                    c += "[sub]";
                } else if (f == "vertical-align" && g == "super") {
                    c += "[sup]";
                } else if (f == "list-style-type" && g == "lower-alpha") {
                    c += "[list=a]";
                } else if (f == "text-align") {
                    g = g.toUpperCase();
                    c += "[" + g + "]";
                } else if(f=="margin-left"||f=="margin-right"){
                                g=parseInt(g)/40;
                                for(var z=0;z<g;z++)
                                        {
                                        c+='[blockquote]';
                                        }
                        }else if (f == "font-weight") {
                    if (g.toUpperCase() == "BOLD" || g.toUpperCase() == "700") {
                        c += "[b]";
                    }
                } else if (f == "font-style") {
                    if (g.toUpperCase() == "ITALIC") {
                        c += "[i]";
                    }
                } else if (f == "font-family") {
                    c += "[font=" + g + "]";
                } else if (f == "font-size") {
                    if (g == "8pt" || g == "9pt" || g == "x-small") {
                        c += "[size=1]";
                    } else if (g == "10pt" || g == "11pt" || g == "small") {
                        c += "[size=2]";
                    } else if (g == "12pt" || g == "13pt" || g == "medium") {
                        c += "[size=3]";
                    } else if (parseInt(g) >= 14 && parseInt(g) < 18 || g == "large") {
                        c += "[size=4]";
                    } else if (parseInt(g) >= 18 && parseInt(g) < 24 || g == "x-large") {
                        c += "[size=5]";
                    } else if (parseInt(g) >= 24 && parseInt(g) < 36 || g == "xx-large") {
                        c += "[size=6]";
                    } else if (parseInt(g) >= 36 || g == "-webkit-xxx-large") {
                        c += "[size=7]";
                    }
                } else if (f == "text-decoration") {
                    if (g.toUpperCase() == "UNDERLINE") {
                        c += "[u]";
                    } else if (g.toUpperCase() == "LINE-THROUGH") {
                        c += "[s]";
                    }
                } else if (f == "color") {
                                        g=g.replace(/^ +| +$/g,"");
                    if (g.indexOf("#") == -1) {
                                        if (g.match(/rgb\((.*?)\)/gi)){
                                        var h = this._toHex(g);
                                        }else{
                       var h = g; }
                                           } else {
                        var h = g;
                    }
                    c += "[color=" + h + "]";
                }
            }
        }
        return c;
},
//converting rgb(..) to Hex
_toHex : function (a)
        {
        a=a.replace(/rgb\((.*?)\)/gi,"$1");
        a=a.replace(/ /,"");
        var c=a.split(",");
        var r=parseInt(c[0]).toString(16);
        var g=parseInt(c[1]).toString(16);
        var b=parseInt(c[2]).toString(16);
        if(r.length==1)r="0"+r;
        if(g.length==1)g="0"+g;
        if(b.length==1)b="0"+b;
        return"#"+r+g+b
}
};

// ----------- almsamim command object -----------//
almsamim.comm = comm = {
_viewmode : 1 ,
_focus : function ()
{
var editor = document.getElementById('box');
editor.contentWindow.focus();
},
// the execCommand function    
_command : function (command)
{
        if (this._viewmode == 1){
        this._focus();
        document.getElementById('box').contentWindow.document.queryCommandEnabled(command);
        document.getElementById('box').contentWindow.document.execCommand(command, false, null);
        this._focus();
}else {
if (command == 'bold'){
bbfontstyle('[b]','[/b]');
}else if (command == 'italic'){
bbfontstyle('[i]','[/i]');
}else if (command == 'underline'){
bbfontstyle('[u]','[/u]');
}else if (command == 'StrikeThrough'){
bbfontstyle('[s]','[/s]');
}else if (command == 'InsertHorizontalRule'){
bbfontstyle('[hr]','[/hr]');
}else if (command == 'subscript'){
bbfontstyle('[sub]','[/sub]');
}else if (command == 'superscript'){
bbfontstyle('[sup]','[/sup]');
}else if (command == 'justifyleft'){
bbfontstyle('[left]','[/left]');
}else if (command == 'justifyright'){
bbfontstyle('[right]','[/right]');
}else if (command == 'justifyfull'){
bbfontstyle('[justify]','[/justify]');
}else if (command == 'justifycenter'){
bbfontstyle('[center]','[/center]');
}else if (command == 'InsertOrderedlist'){
bbfontstyle('[list=1]','[/list]');
}else if (command == 'InsertUnOrderedlist'){
bbfontstyle('[list]','[/list]');
}else if (command == 'indent'){
bbfontstyle('[blockquote]','[/blockquote]');
}else {
alert(lang_s[17]);
}
}
},


// create URL of selection through prompt
_url : function (prompturl)
{
        if (this._viewmode == 1){
        if (prompturl == 1){
                var szURL = prompt(lang_s[12], "http://");
                var tURL = prompt(lang_s[8], "");
                if(tURL){
                this._HTML(' ',' ','<a href ="'+ szURL +'">'+ tURL +'</a>');
                }
        }else{
                var szURL = prompt(lang_s[12], "http://");
                if ((szURL != null) && (szURL != "")) {
                        var Editor = document.getElementById('box').contentWindow.document;
                        this._focus();
                        Editor.queryCommandEnabled("CreateLink");
                        Editor.execCommand("CreateLink", false,szURL);
                        this._focus();  
                  }
          }
          }else {
          if (prompturl == 1){
                var szURL = prompt(lang_s[12], "http://");
                var tURL = prompt(lang_s[8], "");
bbfontstyle('[url=' + szURL +']' + tURL ,'[/url]');
}else{
bbfontstyle('[url=]','[/url]');
}
}
},
// select font size,font-family,heading
_select : function (selection,selected)
{
 if (this._viewmode == 1){
    var Editor = document.getElementById('box').contentWindow.document;
        this._focus();
        Editor.queryCommandEnabled(selection);
        Editor.execCommand(selection, false, selected);
        this._focus();
          }else {
alert(lang_s[17]);
}
},
// creating table in the editor
_table : function ()
{
if (this._viewmode == 1){
                var p=prompt(lang_s[15],"");
                var q=prompt(lang_s[16],"");
                if(p!=null&&q!=null&&!isNaN(p)&&!isNaN(q))
                        {
                        var r='<table style="width: 100%;table-layout:fixed;padding: 0px;border:1px dotted gray;">';
                        var t="";
                        for(irow=0;irow<p;irow++)
                                {
                                t+="<tr>";
                                for(icol=0;icol<q;icol++)
                                        {
                                        t+='<td style="font-size: 20px; display:table-cell;padding:1px;vertical-align:inherit;border:1px dotted #CCCCCC;"> </td>'
                                }
                                t+="</tr>"
                        }
                        r+=t+"</table><br>";
        this._focus();
    this._HTML('','',r);
        this._focus();
    }
                  }else {
alert(lang_s[17]);
}
},
//alternative to insertHTML with all browsers to insert bbcode OR html
_HTML : function (tag,tagend,a)
        {
        this._focus();
        if (this._viewmode == 1){
        var c;
        var u="";
        var d;
        tagend = tagend.replace("=","");
        if(document.all) {
                d=document.getElementById('box').contentWindow;
                d.focus();
                var f=d.document.selection;
                if(f!=null)
                        {
                        rng=f.createRange();
                        u=rng.htmlText;
                }
        } else if (window.getSelection) {
                d=document.getElementById('box').contentWindow;
                d.focus();
                var f=d.getSelection();
                if(f!=""&&f.rangeCount>0)
                        {
                        rng=f.getRangeAt(f.rangeCount-1).cloneContents();
                        var g=d.document.createElement('div');
                        g.appendChild(rng);
                        u=g.innerHTML;
                }
        }
        if(a){
        var cc = tag+a+tagend;
        }else if(u){
                if(tag=="[code]"||tag=="[code=php]")
                {
                                u=u.replace(/[\n\r]/ig,'');
                                u=u.replace(/<(br|p|div|li).*?>/ig,"[BR/]");
                                u=u.replace(/<\/(p|div).*?>/ig,"");
                                u=u.replace(/(<([^>]+)>)/ig,"");
                                u=u.replace(/\[BR\/\]/ig,"<br>");
                                var cc = tag+u+tagend;  
                }else{
                                var cc = tag+u+tagend;
                }
        }else {
                if(tag=="[code]"||tag=="[code=php]"||tag=="[quote]"){
                        var cc = tag+tagend;
                }else if(tag =="[video]"){
                var q=prompt(lang_s[14],"");
                if(q!=""&&q!=null){
                var cc = tag+q+tagend;
                }else{
                var cc = '';
                }
                }else{
                        var cc = tag+tagend;
                        }
        }
        if(isIE)
        {
                d=document.getElementById('box').contentWindow;
                d.document.execCommand("removeformat",false,"");
                d.focus();
                rng.pasteHTML(cc);
                d.focus();
        }
        else if(isWebKit)
                {
                c=document.getElementById('box').contentWindow;
                c.focus();
                u=u.replace(/</g,"[OPEN]");
                u=u.replace(/>/g,"[CLOSE]");
                c.document.execCommand('insertHTML',false,cc);
                var e=document.getElementById('box').contentWindow.document.body.innerHTML;
                u=u.replace(/\[OPEN\]/g,'<');
                u=u.replace(/\[CLOSE\]/g,'>');
                u=u.replace(/[\n\r]/ig,'');
                document.getElementById('box').contentWindow.document.body.innerHTML=e;
                c.focus();
        }
        else
                {
                if(cc!=""&&cc!=null){
                c=document.getElementById('box').contentWindow;
                c.focus();
                c.document.execCommand("removeformat",false,"");
                c.document.execCommand('insertHTML',false,cc);
                c.document.execCommand("removeformat",false,"");
                c.focus();
                }
        }
                  }else {
                  if(a){
                                bbfontstyle(tag + bbcode._HTMLtoBBcode(a),tagend);
}else{
                                bbfontstyle(tag ,tagend);
}
}
},
// insert image in the editor
_image : function ()
{
        if (this._viewmode == 1){
        imagePath = prompt(lang_s[11], 'http://');
        if ((imagePath != null) && (imagePath != "")) {
                var Editor = document.getElementById('box').contentWindow.document;
                this._focus();
                Editor.queryCommandEnabled("InsertImage");
                Editor.execCommand("InsertImage", false, imagePath);
                this._focus();  
                }
                          }else {
bbfontstyle('[img]','[/img]');
}
},
_set : function (s) {
        var Editor = document.getElementById('box').contentWindow.document;
        if (!isGecko)
                return;
        try {
                // Try new Gecko method
                Editor.execCommand("styleWithCSS", 0, s);
                } catch (ex) {
                // Use old
                Editor.execCommand("useCSS", 0, !s);
                }
},
//colour EXECCOMMAND
_colour : function (colour,type)
{
        if (this._viewmode == 1){
        if(isIE && type=="hilitecolor"|| isWebKit && type=="hilitecolor")type="backcolor";
        var Editor = document.getElementById('box').contentWindow.document;
        this._focus();
        if (isGecko || isOpera && type=="hilitecolor") {
                this._set(true);
        }
        Editor.queryCommandEnabled(type);
        Editor.execCommand(type, false, colour);
        if (isGecko || isOpera && type=="hilitecolor") {
                this._set(false);
        }
        this._focus();
                  }else {
                  if(type == "hilitecolor"){
                  bbfontstyle('[highlight=' + colour +']','[/highlight]');
                  }else{
bbfontstyle('[color=' + colour +']','[/color]');
}
}
},
//toggle BBcode HTML
_toggle : function (colour)
{
var Editor = document.getElementById('box').contentWindow.document;
if(this._viewmode == 1)
{
        var source = document.getElementById('box_text');
        var editor = document.getElementById('box');
        var switch_b = document.getElementById('switch');
        editor.style.display = 'none';
        source.style.display = 'block';
        switch_b.style.border= 'none';
        switch_b.style.padding= '2px';
        switch_b.style.background= 'none';
        var ceditor = bbcode._HTMLtoBBcode(bbcode._erase(Editor.body.innerHTML));
        source.value = ceditor;
        this._viewmode = 2; // Code
}
else
{
        var source = document.getElementById('box_text');
        var editor = document.getElementById('box');
        var switch_b = document.getElementById('switch');
        editor.style.display = 'block';
        source.style.display = 'none';
        switch_b.style.border= '1px solid #316ac5';
        switch_b.style.padding= '1px';
        switch_b.style.background= '#f1f6f8';
        //writing iframe content and style of the editor
        var iframeContent;
        iframeContent  = '<html xmlns="http://www.w3.org/1999/xhtml" dir="' + lang_s[9] + '" lang="en-gb" xml:lang="en-gb">\n';
        iframeContent += '<head><style type="text/css">body{font-family:Verdana,Arial,Sans-Serif,Tahoma;font-size:12px;background:'+ lang_s[6] +';color:' + lang_s[7] + ';margin:2px;padding:2px;}p {margin:0;padding:0;min-height: 1em; } *+html p { min-height: auto; }div {margin:0;padding:0;}</style></head><body>';      
        if (source.value !== ""){
        var v = source.value;
        iframeContent +=  bbcode._BBcodetoHTML(v) ;
        }
        iframeContent += '</body>';
        iframeContent += '</html>';
        Editor.open();
        Editor.write(iframeContent);
        Editor.close();
                if(isIE){
                        Editor.attachEvent('onkeypress', editorEvents);
                        Editor.attachEvent('onmousedown', editorEvents);
                        Editor.attachEvent('onmousedown', hideall);
                        Editor.body.contentEditable = true;
                }else{
                        Editor.addEventListener('keypress', editorEvents, true);
                        Editor.addEventListener('mousedown', editorEvents, true);
                        Editor.addEventListener('mousedown', hideall, true);
                        Editor.designMode = "on";
                }
                if(!isWebKit){
                // disable CSS in Geko ,IE and opera  
                try {
                        // Try new Gecko method
                        Editor.execCommand("styleWithCSS", 0, false);
                } catch (e) {
                        // Use old method
                        try {Editor.execCommand("useCSS", 0, true);} catch (e) {};
                }
                }
        this._viewmode = 1; // WYSIWYG
}
},
// print colour palette in a table [phpBB3]
_palette : function (type)
{
		var color = Array('000000', '993300','333300', '000080', '333399', '333333', '800000', 'FF6600', '808000', '008000', '008080', '0000FF', '666699', '808080', 'FF0000', 'FF9900', '99CC00', '339966', '33CCCC', '3366FF', '800080', '999999', 'FF00FF', 'FFCC00', 'FFFF00', '00FF00', '00FFFF', '00CCFF', '993366', 'C0C0C0', 'FF99CC', 'FFCC99', 'FFFF99' , 'CCFFFF', '99CCFF', 'FFFFFF');
        document.writeln('<div>');
				for (var i=0; i<color.length; i++) {
                                document.write('<div style="background-color:#' + color[i] + ';border:1px solid #000000;cursor:pointer;float:left;height:12px;line-height:12px;margin:2px;width:12px;">');
                                document.writeln('<a href="#" onClick="comm._colour(\'#' + color[i] + '\',\'' + type +'\'); return false;"><img src="' + lang_s[10] + 'images/editor/spacer.gif" width="15" height="10" alt="#' + color[i] + '" title="#' + color[i] + '" /></a></div>');
                }
        document.writeln('</div>');
}
};


//-------  golbal functions -------- //

// gettext into textarea html or bbcode
function Gettext(value,bb) {
         var text = document.getElementById(value);
         if (comm._viewmode == 2){
                var source = document.getElementById('box_text');
        text.value = source.value;
         comm._viewmode = 1; // WYSIWYG
                 }else {
                 Editor = document.getElementById('box').contentWindow.document;
                 var ceditor = bbcode._HTMLtoBBcode(bbcode._erase(Editor.body.innerHTML));
                 text.value = ceditor;
                 }
         
};
// increase and decrease size of the iframe
function textbox_resize(pix)
{
if (comm._viewmode == 1){
        var box                 = document.getElementById('box');
        var new_height  = (parseInt(box.style.height) ? parseInt(box.style.height) : 200) + pix;
        if (new_height > 199)
        {
                box.style.height = new_height + 'px';
        }
        return false;
        }else{
                var box                 = document.getElementById('box_text');
        var new_height  = (parseInt(box.style.height) ? parseInt(box.style.height) : 200) + pix;
        if (new_height > 110)
        {
                box.style.height = new_height + 'px';
        }
        return false;
        }
};
// adding quote in topic revision
function addquote(post_id, username){
        var message_name = 'message_' + post_id;
        divarea = document.getElementById(message_name).innerHTML;
        comm._HTML('[quote="' + username + '"]','[/quote]',divarea);
};
// add smiley through path as image
function AddSmileyIcon(imagePath,theme){
        // removing dot from URL
                 if (comm._viewmode == 1){
        imagePath = imagePath.replace(/.\/images\/smilies/gi,"/images/smilies");
                comm._focus();
                comm._HTML(' ',' ',' <img src="'+ imagePath +'" />');
                comm._focus();
                }else{
                bbfontstyle(' ' + theme,' ');
                }
};
//Function to hover button icon
function overIcon(iconItem){
        iconItem.className='oover';
};
//Function to moving off button icon
function outIcon(iconItem){
        iconItem.className='button';
};
/**
* Caret Position object
*/
function caretPosition()
{
        var start = null;
        var end = null;
};
/**
* Get the caret position in an textarea
*/
function getCaretPosition(txtarea)
{
        var caretPos = new caretPosition();
       
        // simple Gecko/Opera way
        if(txtarea.selectionStart || txtarea.selectionStart == 0)
        {
                caretPos.start = txtarea.selectionStart;
                caretPos.end = txtarea.selectionEnd;
        }
        // dirty and slow IE way
        else if(document.selection)
        {
       
                // get current selection
                var range = document.selection.createRange();

                // a new selection of the whole textarea
                var range_all = document.body.createTextRange();
                range_all.moveToElementText(txtarea);
               
                // calculate selection start point by moving beginning of range_all to beginning of range
                var sel_start;
                for (sel_start = 0; range_all.compareEndPoints('StartToStart', range) < 0; sel_start++)
                {              
                        range_all.moveStart('character', 1);
                }
       
                txtarea.sel_start = sel_start;
       
                // we ignore the end value for IE, this is already dirty enough and we don't need it
                caretPos.start = txtarea.sel_start;
                caretPos.end = txtarea.sel_start;                      
        }

        return caretPos;
};

/**
* Apply bbcodes
*/
function bbfontstyle(bbopen, bbclose)
{
        theSelection = false;

        var textarea = document.getElementById('box_text');

        textarea.focus();

  if (isIE)
   {
      // Get text selection
      theSelection = document.selection.createRange().text;
      var sel = document.selection.createRange();

      if (theSelection)
      {
         // Add tags around selection
         document.selection.createRange().text = bbopen + theSelection + bbclose;
         textarea.focus();
         sel.moveStart('character', bbopen.length);
         sel.moveEnd('character', theSelection.length);
         sel.select();
         theSelection = '';
         return;
      }
   }
        else if (textarea.selectionEnd && (textarea.selectionEnd - textarea.selectionStart > 0))
        {
                mozWrap(textarea, bbopen, bbclose);
                textarea.focus();
                theSelection = '';
                return;
        }
       
        //The new position for the cursor after adding the bbcode
        var caret_pos = getCaretPosition(textarea).start;
        var new_pos = caret_pos + bbopen.length;        
       
        // Open tag
        insert_text(bbopen + bbclose);

        // Center the cursor when we don't have a selection
        // Gecko and proper browsers
        if (!isNaN(textarea.selectionStart))
        {
                textarea.selectionStart = new_pos;
                textarea.selectionEnd = new_pos;
        }      
        // IE
        else if (document.selection)
        {
                var range = textarea.createTextRange();
                range.move("character", new_pos);
                range.select();
                storeCaret(textarea);
        }

        textarea.focus();
        return;
};
function mozWrap(txtarea, open, close)
{
        var selLength = txtarea.textLength;
        var selStart = txtarea.selectionStart;
        var selEnd = txtarea.selectionEnd;
        var scrollTop = txtarea.scrollTop;


        if (selEnd == 1 || selEnd == 2)
        {
                selEnd = selLength;
        }

        var s1 = (txtarea.value).substring(0,selStart);
        var s2 = (txtarea.value).substring(selStart, selEnd);
        var s3 = (txtarea.value).substring(selEnd, selLength);

        txtarea.value = s1 + open + s2 + close + s3;
    txtarea.selectionStart = selStart + open.length;
    txtarea.selectionEnd = selEnd + open.length;
        txtarea.focus();
        txtarea.scrollTop = scrollTop;

        return;
};
function insert_text(text, spaces, popup)
{
        var textarea;
       
        if (!popup)
        {
                textarea = document.getElementById('box_text');
        }
        else
        {
                textarea = opener.document.getElementById('box_text');
        }
        if (spaces)
        {
                text = ' ' + text + ' ';
        }
       
        if (!isNaN(textarea.selectionStart))
        {
                var sel_start = textarea.selectionStart;
                var sel_end = textarea.selectionEnd;

                mozWrap(textarea, text, '');
                textarea.selectionStart = sel_start + text.length;
                textarea.selectionEnd = sel_end + text.length;
        }
        else if (textarea.createTextRange && textarea.caretPos)
        {
                        textarea.focus();
                        storeCaret(textarea);

                var caret_pos = textarea.caretPos;
                caret_pos.text = caret_pos.text.charAt(caret_pos.text.length - 1) == ' ' ? caret_pos.text + text + ' ' : caret_pos.text + text;
        }
        else
        {
                textarea.value = textarea.value + text;
        }
        if (!popup)
        {
                textarea.focus();
        }
};

function storeCaret(textEl)
{
        if (textEl.createTextRange)
        {
                textEl.caretPos = document.selection.createRange().duplicate();
        }
};
//Run Editor Events
function editorEvents(evt){
        var keyCode = evt.keyCode ? evt.keyCode : evt.charCode;
        var keyCodeChar = String.fromCharCode(keyCode).toLowerCase();
        if(isIE){
                //run if enter key is pressed
        if (evt.type=='keypress' && keyCode==13){
                var editor = document.getElementById('box');
                var selectedRange = editor.contentWindow.document.selection.createRange();
                var parentElement = selectedRange.parentElement();
                var tagName = parentElement.tagName;
                while((/^(a|abbr|acronym|b|bdo|big|cite|code|dfn|em|font|i|kbd|label|q|s|samp|select|small|span|strike|strong|sub|sup|textarea|tt|u|var)$/i.test(tagName)) && (tagName!='HTML')){
                        parentElement = parentElement.parentElement;
                        tagName = parentElement.tagName;
                }
                //Insert <div> instead of <p>
                if (parentElement.tagName == 'P'||parentElement.tagName=='BODY'||parentElement.tagName=='HTML'||parentElement.tagName=='TD'||parentElement.tagName=='THEAD'||parentElement.tagName=='TFOOT'){
                        selectedRange.pasteHTML('<div>');
                        selectedRange.select();
                        return false;
                }
        }
        hideall();
        return true;
        }else{
        //Keyboard shortcuts
        if (evt.type=='keypress' && evt.ctrlKey){
                var kbShortcut;
                switch (keyCodeChar){
                        case 'b': kbShortcut = 'bold'; break;
                        case 'i': kbShortcut = 'italic'; break;
                        case 'u': kbShortcut = 'underline'; break;
                        case 's': kbShortcut = 'strikethrough'; break;
                }
                if (kbShortcut){
                        comm._focus();
                        document.getElementById('box').contentWindow.document.queryCommandEnabled(kbShortcut);
                        document.getElementById('box').contentWindow.document.execCommand(kbShortcut, false, null);
                        comm._focus();
                        evt.preventDefault();
                        evt.stopPropagation();
                }
        }
        hideall();
        return true;
        }
};
var dropdowncontent={
	disableanchorlink: true, hidedivmouseout: [true, 500], ajaxloadingmsg: '<img src="images/editor/loading.gif" />', ajaxbustcache: true,getposOffset:function(what, offsettype){
		return (what.offsetParent)? what[offsettype]+this.getposOffset(what.offsetParent, offsettype) : what[offsettype]
	},
	isContained:function(m, e){
		var e=window.event || e ;
		var c=e.relatedTarget || ((e.type=="mouseover")? e.fromElement : e.toElement);
		while (c && c!=m)try {c=c.parentNode} catch(e){c=m}
		if (c==m)
			return true;
		else
			return false;
	},
	show:function(anchorobj, subobj, e){
		if (!this.isContained(anchorobj, e) || (e && e.type=="click")){
			hideall();
			var horizontaloffset=(subobj.dropposition[0]=="left")? -(subobj.offsetWidth-anchorobj.offsetWidth) : 0 ;
			var verticaloffset=(subobj.dropposition[1]=="top")? -subobj.offsetHeight : anchorobj.offsetHeight;
			subobj.style.left=this.getposOffset(anchorobj, "offsetLeft") + horizontaloffset + "px";
			subobj.style.top=this.getposOffset(anchorobj, "offsetTop")+verticaloffset+"px";
			subobj.style.clip=(subobj.dropposition[1]=="top")? "rect(auto auto auto 0)" : "rect(0 auto 0 0)";
			subobj.style.display = '';
			subobj.startTime=new Date().getTime();
			subobj.contentheight=parseInt(subobj.offsetHeight);
			if (typeof window["hidetimer_"+subobj.id]!="undefined")
				clearTimeout(window["hidetimer_"+subobj.id]);
			this.slideengine(subobj, (subobj.dropposition[1]=="top")? "up" : "down");
		}
	},

	curveincrement:function(percent){
		return (1-Math.cos(percent*Math.PI)) / 2 ;
	},

	slideengine:function(obj, direction){
		var elapsed=new Date().getTime()-obj.startTime ;
		if (elapsed<obj.glidetime){
			var distancepercent=(direction=="down")? this.curveincrement(elapsed/obj.glidetime) : 1-this.curveincrement(elapsed/obj.glidetime);
			var currentclip=(distancepercent*obj.contentheight)+"px";
			obj.style.clip=(direction=="down")? "rect(0 auto "+currentclip+" 0)" : "rect("+currentclip+" auto auto 0)";
			window["glidetimer_"+obj.id]=setTimeout(function(){dropdowncontent.slideengine(obj, direction)}, 10);
		}
		else{
			obj.style.clip="rect(0 auto auto 0)";
		}
	},
	hide:function(activeobj, subobj, e){
		if (!dropdowncontent.isContained(activeobj, e)){
			window["hidetimer_"+subobj.id]=setTimeout(function(){
				subobj.style.display="none";
				subobj.style.left=subobj.style.top=0;
				clearTimeout(window["glidetimer_"+subobj.id]);
				hideall();
			}, dropdowncontent.hidedivmouseout[1])
		}
	},

	hidediv:function(subobjid){
		document.getElementById(subobjid).style.display="none";
	},

	ajaxconnect:function(pageurl, divId){
		var page_request = false;
		var bustcacheparameter="";
		if (window.XMLHttpRequest)
			page_request = new XMLHttpRequest();
		else if (window.ActiveXObject){
			try {
			page_request = new ActiveXObject("Msxml2.XMLHTTP");
			} 
			catch (e){
				try{
				page_request = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch (e){}
			}
		}
		else
			return false;
		document.getElementById(divId).innerHTML=this.ajaxloadingmsg ;
		page_request.onreadystatechange=function(){dropdowncontent.loadpage(page_request, divId)};
		if (this.ajaxbustcache)
			bustcacheparameter=(pageurl.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime();
		page_request.open('GET', pageurl+bustcacheparameter, true);
		page_request.send(null);
	},
	loadpage:function(page_request, divId){
		if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)){
			document.getElementById(divId).innerHTML=page_request.responseText;
		}
	},
 init:function(anchorid, pos, glidetime, revealbehavior){
		var anchorobj=document.getElementById(anchorid);
		var subobj=document.getElementById(anchorobj.getAttribute("rel"));
		var subobjsource=anchorobj.getAttribute("rev");
		if (subobjsource!=null && subobjsource!="")
			this.ajaxconnect(subobjsource, anchorobj.getAttribute("rel"));
		subobj.dropposition=pos.split("-");
		subobj.glidetime=glidetime || 1000;
		subobj.style.left=subobj.style.top=0;
		if (typeof revealbehavior=="undefined" || revealbehavior=="mouseover"){
			anchorobj.onmouseover=function(e){dropdowncontent.show(this, subobj, e)}
			anchorobj.onmouseout=function(e){dropdowncontent.hide(subobj, subobj, e)}
			if (this.disableanchorlink) anchorobj.onclick=function(){return false}
		}
		else
			anchorobj.onclick=function(e){dropdowncontent.show(this, subobj, e); return false}
	}
}